﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PTTK_HTTT_06.BUS;

namespace PTTK_HTTT_06.GUI.LapDSYeuCauSanPham
{
    public partial class MHLapBangYCSP : UserControl
    {
        
        
        public NHAN_VIEN nhanVien { get; set; }
        
        private YC_XUAT_SAN_PHAM xuatSP = null;
        private List<CT_YC_XUAT_SAN_PHAM> ctxSPList = null;

        public MHLapBangYCSP()
        {
            InitializeComponent();
        }

        #region MHLapbangYCSP_Load()
        private void MHLapBangYCSP_Load(object sender, EventArgs e)
        {
            //cài đặt ngày
            
            dtPickerNgayLap.MinDate = DateTime.Today;

            

            //tải danh sách món ăn lên combobox
            TaiDanhSachSanPham();
        }
        #endregion
        
        

        #region sự kiện trả ra thông báo lỗi
        public event EventHandler ThongBaoLoi;
        private void OnThongBaoLoi(string error)
        {
            EventHandler handler = ThongBaoLoi;
            if (handler != null) handler(error, EventArgs.Empty);
        }
        #endregion

        

        

        

        

        #region tải danh sách món ăn
        private void TaiDanhSachSanPham()
        {
            List<SAN_PHAM> SPList = SAN_PHAM.LayDanhSach();
            cbbSanPham.Items.Clear();
            cbbSanPham.DataSource = SPList;
            cbbSanPham.ValueMember = "MaSP";
            cbbSanPham.DisplayMember = "TenSP";

        }
        #endregion



        #region btnChonSP_Click()
        private void btnChonSP_Click(object sender, EventArgs e)
        {
            //kiếm tra dữ liệu
            if (cbbSanPham.SelectedIndex < 0 || nbSoLuong.Value <= 0)
            {
                OnThongBaoLoi("Chưa chọn sản phẩm hoặc số lượng nhỏ hơn 1");
                return;
            }
            else
            {
                OnThongBaoLoi("...");
            }


            if (ctxSPList == null)
                ctxSPList = new List<CT_YC_XUAT_SAN_PHAM>();

            // lấy sản phẩm được chọn
            SAN_PHAM SPDuocChon = (cbbSanPham.SelectedItem as SAN_PHAM);
            
            //láy thông tin ra
            CT_YC_XUAT_SAN_PHAM ctYCSP = new CT_YC_XUAT_SAN_PHAM();

            ctYCSP.MaSP = SPDuocChon.MaSP;
            ctYCSP.SoLuong = (int)nbSoLuong.Value;

            
            

            //kiểm tra đã tồn tại sản phẩm chưa?
            if (ctxSPList.Where(a => a.MaSP == SPDuocChon.MaSP).Count() > 0)
            {
                // xử lý xóa thằng trước
                ctxSPList.RemoveAll(a => a.MaSP == SPDuocChon.MaSP);

                // chỉn trong gridview
                for (int i = 0; i < gViewChonSP.Rows.Count; i++)
                {
                    if (int.Parse(gViewChonSP.Rows[i].Cells[1].Value.ToString()) == ctYCSP.MaSP)
                        gViewChonSP.Rows[i].Cells[3].Value = ctYCSP.SoLuong.ToString();
                }
            }
            else{
                //thêm vào gridview các món đã được chọn
                int countRow = gViewChonSP.Rows.Count + 1;
                gViewChonSP.Rows.Add(countRow, SPDuocChon.MaSP, SPDuocChon.TenSP, (int)nbSoLuong.Value, "Hủy");

                //if is the odd, show color a different
                if (countRow % 2 != 0)
                    gViewChonSP.Rows[countRow - 1].DefaultCellStyle.BackColor = Color.Honeydew;
            }
                
            // thêm vào ctThucDon
            ctxSPList.Add(ctYCSP);
        
            //reset dữ liệu
            nbSoLuong.Value = 0;
        }
        #endregion

        

        #region gViewChonSP_CellClick()
        private void gViewChonSP_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 4)
            {
                //lấy thông tin ra
                int maSP = int.Parse(gViewChonSP.Rows[e.RowIndex].Cells[1].Value.ToString());
                

                //xóa đi
                ctxSPList.RemoveAll(a => a.MaSP == maSP);
                gViewChonSP.Rows.RemoveAt(e.RowIndex);

                //sắp xếp lại hiển thị
                for (int i = 0; i < gViewChonSP.Rows.Count; i++)
                {
                    gViewChonSP.Rows[i].Cells[0].Value = i + 1;

                    //thay đổi màu
                    if (i % 2 == 0)
                        gViewChonSP.Rows[i].DefaultCellStyle.BackColor = Color.Honeydew;
                    else
                        gViewChonSP.Rows[i].DefaultCellStyle.BackColor = Color.White;
                }
            }
        }
        #endregion

        #region btnLuuDSYC_Click()
        private void btnLuuDSYC_Click(object sender, EventArgs e)
        {
            try
            {
                OnThongBaoLoi("...");

                //báo lỗi nếu chưa chọn thực đơn
                if (ctxSPList == null || ctxSPList.Count <= 0)
                {
                    OnThongBaoLoi("Chưa chọn sản phẩm vào danh sách yêu cầu!.");
                    return;
                }                    

                //Xử lý lưu phiếu yêu cầu xuất sản phẩm
                if ( xuatSP == null)
                    xuatSP = new YC_XUAT_SAN_PHAM();
                xuatSP.MaNV = nhanVien.MaNhanVien;
                xuatSP.NgayLap = dtPickerNgayLap.Value.Date;
                

       
                xuatSP.MaYCXuatSP = YC_XUAT_SAN_PHAM.ThemYCXuatSP(xuatSP);
                if (xuatSP.MaYCXuatSP == -1)
                {
                    OnThongBaoLoi("Có lỗi xảy ra trong quá trình thực hiện, vui lòng thử lại!.");
                    return;
                }

                //xử lý lưu chi tiết phiếu yêu cầu xuất sản phẩm
                int numError = 0;
                //ctxSPList = ctxSPList.OrderBy(a => a.).ToList();//sắp xếp lại theo ngày tăng dần
                foreach (CT_YC_XUAT_SAN_PHAM ctycsp in ctxSPList)
                {
                    ctycsp.MaYCXuatSanPham = xuatSP.MaYCXuatSP;
                    ctycsp.MaYCXuatSanPham = CT_YC_XUAT_SAN_PHAM.ThemCTYCSP(ctycsp);

                    if (ctycsp.MaYCXuatSanPham == -1)
                        numError++;
                        
                }

                //thông báo lỗi
                if (numError > 0)
                    OnThongBaoLoi("Có lỗi xảy, không thêm được "+ numError +" chi tiết yêu cầu xuất sản phẩm!.");
                if(numError == 0)
                    OnThongBaoLoi("Đã lưu thành công danh sách yêu cầu sản phẩm");


                

                //Xử lý hiển thị nút lưu thực đơn & in thực đơn
                //btnLuuThucDon.Visible = false;
                
            }
            catch (Exception ex)
            {
                OnThongBaoLoi(ex.Message);
            }
        }
        #endregion

        
        
        

        

       

        
    }
}
